/**
 * 用户模块：存储token、个人信息
 */
// 导入登录接口
import { loginApi, getUserInfoApi } from '@/api/user'

// 导入本地存储token方法
import { setToken, getToken, delToken } from '@/utils/auth'

export default {
  namespaced: true, // 命名空间开启
  // 1.定义变量
  state: {
    token: getToken() || '',
    // 用户个人信息
    userInfo: {}
  },
  // 2、修改变量
  mutations: {
    /**
     *
     * @param {*} state
     * @param {*} payload 调用setToken传入的参数
     */
    setToken (state, payload) {
      state.token = payload
      setToken(payload)
    },
    // 删除token
    delToken (state) {
      state.token = ''
      delToken()
    },
    // 存储用户信息
    setUserInfo (state, payload) {
      state.userInfo = payload
    }
  },
  // 发请求
  actions: {
    /**
     *
     * @param {*} ctx 上下文
     * @param {*} payload 页面调用getTokenAction传入的参数
     */
    async getTokenAction ({ commit }, payload) {
      const { data } = await loginApi(payload)
      console.log('token:', data)
      if (data.code === 0) {
        commit('setToken', data.token)
      }
      return data
    },
    async getUserAction ({ commit }) {
      const { data } = await getUserInfoApi()
      console.log('用户信息:', data)
      commit('setUserInfo', data.data)
    }
  }
}
